﻿/*************************************************
  * 描述：用来加载图片的Label控件
  *
  * File：imagelabel.h
  * Author：gaomaolong@mozihealthcare.cn
  * Date：2025-09-29
  * Update：
  * ************************************************/
#ifndef CXIIMAGELABEL_H
#define CXIIMAGELABEL_H

#include "controls/export.h"
#include <QLabel>

class CxiImageLabelPrivate;

class CXI_CONTROLS_EXPORT CxiImageLabel : public QLabel
{
	Q_OBJECT
public:

	explicit CxiImageLabel(QWidget* parent = nullptr);

	~CxiImageLabel() override;
	/**
	 * 从文件路径加载图片
	 * @param filePath 文件路径
	 * @return 成功返回true，失败返回false
	 */
	bool loadFromFile(const QString& filePath);

	/**
	 * 判断当前是否已经加载过图片
	 * @return
	 */
	bool isImageLoaded();

	/**
	 * 设置缩放模式（原QLabel只支持按照尺寸缩放，此处扩展了按比例缩放）
	 * @param keepAspectRatio 按比例缩放
	 */
	void setKeepAspectRatio(bool keepAspectRatio);

	/**
	 * 判断是否按比例缩放
	 * @return true是，false否
	 */
	bool hasKeepAspectRatio() const;

protected:
	// 重写paint，resize事件，实现按比例缩放的逻辑
	void paintEvent(QPaintEvent* event) override;
	void resizeEvent(QResizeEvent* event) override;

private:
	Q_DECLARE_PRIVATE(CxiImageLabel)
	QScopedPointer<CxiImageLabelPrivate> d_ptr;
};

#endif// CXIIMAGELABEL_H